<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /*
      var:
      1.使用val是顶级变量-window对象的属性
      2.使用val声明变量存在变量提升的情况
      3.使用val可以对一个变量进行多次声明，后面的会覆盖前面的

      let:
      1.代码块生效,块级作用域
      2.不存在变量提升

      const:
      1.一旦声明必须赋值

      区别：
      1.变量提升:
      var存在变量提升,let const 不存在变量提升
      2.块级作用域
      var不存在块级作用域,let和const存在块级作用域
      3.重复声明
      var可以重复声明，let和const不允许在同一个作用域重复声明
      4.修改声明变量
      var和let可以修改,const不能改变->指的是内存地址
    */

    var b;
    console.log(b);//不会报错，undefined
  </script>
</body>

</html>